Cardioid Linkage

Move generator point G

Locus

A = (5.55, 4.21)
B = (3.25, 1.75)
c = Circle(A, B)
C = Point(c)
a = Segment(A, C)
G = Point(c)
b = Segment(A, G)
A'_1 = Mirror(A, C)
p = Segment(C, A'_1)
E = Midpoint(G, A'_1)
A' = Mirror(A, E)
d = Segment(G, A')
e = Segment(A', A'_1)
f = Segment(G, A'_1)
A'_2 = Mirror(A, f)
g = Segment(A'_2, A'_1)
F = Midpoint(A'_2, A'_1)
G_1 = Midpoint(F, A'_1)
H = Midpoint(G_1, A')
h = Segment(G_1, A')
i = OrthogonalLine(H, h)
I = Mirror(A'_1, i)
j = Segment(A', I)
k = Segment(I, G_1)
loc1 = Locus(I, G)
l = Segment(A'_2, G)
m = false